﻿namespace TestClassLibrary
{
	class OutterClass
	{
		private class PrivateInnerClass
		{
			static private int PrivateField;
			public int PublicField;
			private int PrivateProperty { get; set; }
			public int PublicProperty { get; set; }
			private void PrivateMethod() { ++PrivateField; }
			public void PublicMethod() { ++PrivateField; }
		}

		protected class ProtectedInnerClass
		{
			static private int PrivateField;
			public int PublicField;
			private int PrivateProperty { get; set; }
			public int PublicProperty { get; set; }
			private void PrivateMethod() { ++PrivateField; }
			public void PublicMethod() { ++PrivateField; }
		}

		public class PublicInnerClass
		{
			static private int PrivateField;
			public int PublicField;
			private int PrivateProperty { get; set; }
			public int PublicProperty { get; set; }
			private void PrivateMethod() { ++PrivateField; }
			public void PublicMethod() { ++PrivateField; }
			PrivateInnerClass ReferenceToPrivateNestedClass;
		}

		internal class InternalInnerClass
		{
			static private int PrivateField;
			public int PublicField;
			private int PrivateProperty { get; set; }
			public int PublicProperty { get; set; }
			private void PrivateMethod() { ++PrivateField; }
			public void PublicMethod() { ++PrivateField; }
		}

		internal protected class InternalProtectedInnerClass
		{
			static private int PrivateField;
			public int PublicField;
			private int PrivateProperty { get; set; }
			public int PublicProperty { get; set; }
			private void PrivateMethod() { ++PrivateField; }
			public void PublicMethod() { ++PrivateField; }
		}
	}
}
